<?php namespace Admin\Controller; 

//文章管理控制器
class ArcController extends CommonController{
	private $model;	
	
	//自动实例化Arc类
	public function __auto(){
		$this->model = new \Common\Model\Arc;
	}//__auto
	
	
	//默认显示文章列表(is_recycle为0的数据)
	public function index(){
		//1.文章列表分页
		$page = Page::row(3)->make(Db::table('article')->where('is_recycle=0')->count());
		
		//2.调取数据 SELECT * FROM article JOIN category ON category_cid=cid;
		$data = Db::table('article')
				->join('category','category_cid','=','cid')
				->where("is_recycle=0")
				->orderBy('sendtime','DESC')
				->field('title,aid,cname,sendtime')
				->limit(Page::limit())
				->get();
		//首先判断是否有文章数据,没有的话就去添加文章界面
		if(!$data) View::success("还没有文章,快去添加吧",U('add'));

		//分配变量到页面
		View::with('page',$page);
		View::with('data',$data);
		View::make();
	}//index
	
	
	//添加文章页面
	public function add(){
		//判断如果有POST提交******
		if(IS_POST){
			//判断如果成功,给予提示信息
			if($this->model->store()){
				View::success("添加成功");
			}
			//失败信息
			View::error($this->model->getError());
		}//IS_PSOT
		
		//1.处理"所属分类"*******
		//实例化Cate模型类
		$cateModel = new \Common\Model\Cate;
		//Cate里cname以树状结构显示
		$cateData = Data::tree($cateModel->get(),'cname');
		//分配cate的数据cateData
		View::with('cateData',$cateData);
		//2.处理"所属标签"******
		//实例化Tag模型类
		$tagModel = new \Common\Model\Tag;
		//获得Tag数据
		$tagData = $tagModel->get();
		//分配变量
		View::with('tagData',$tagData);
		//显示模板
		View::make();
	}//index
	
	
	//删除到回收站
	public function recycle(){
		//获得数据aid 并转为整型
		$aid = Q('get.aid',0,'intval');
		//修改Arc表('is_recycle')为1
		$this->model->where('aid',$aid)->update(['is_recycle'=>1]);
		View::success('删除成功',U('index'));
	}//recycle
	
	
	//回收站显示页面
	public function ViewRecycle(){
		//1.分页显示is_recycle为1的数据
		$page = Page::row(2)->make(Db::table('article')->where("is_recycle=1")->count());
		//分配变量
		View::with('page',$page);
		//2.调取数据
		$data = Db::table('article')
				->join('category','category_cid','=','cid')
				->where("is_recycle=1")
				->orderBy('sendtime','DESC')
				->field('title,aid,cname,sendtime')
				->limit(Page::limit())
				->get();
		//将数据分配到页面
		View::with('data',$data);
		//显示模板
		View::make();
	}//ViewRecycle
	
	
	//回收站文章还原
	public function restore(){
		$aid = Q('get.aid',0,'intval');
		//修改Arc表的is_recycle数据为0
		Db::table('article')->where('aid',$aid)->update(['is_recycle'=>0]);
		View::success('还原成功',U('ViewRecycle'));
	}//restore
	
	
	//彻底删除
	public function del(){
		//获得GET参数tid (intval)
		$aid = Q('get.aid',0,'intval');
		//修改Arc表的is_recycle数据为0
		Db::table('article')->where('aid',$aid)->delete();
		Db::table('article_data')->where('article_aid',$aid)->delete();
		Db::table('article_tag')->where('article_aid',$aid)->delete();
		View::success('已从数据库删除',U('ViewRecycle'));
	}//del
	
	
	//编辑文章
	public function edit(){
		//三**POST提交时 ,修改
		if(IS_POST){
			//验证是否通过修改方法的验证
			if(!$this->model->edit()) View::error($this->model->getError());
			View::success("修改成功");
		}//IS_POST
		//一**处理标签表和分类表的数据
		//将tag数据分配到页面
		$tagModel = new \Common\Model\Tag;
		View::with('tagData',$tagModel->get());
		//将cate里的cname以树状结构分配到页面
		$cateModel = new \Common\Model\Cate;
		View::with('cateData',Data::tree($cateModel->get(),'cname'));
		//二**获取旧数据arctile与article_data内容表
		//得到传的参数aid为几的数据
		$aid = Q('get.aid',0,'intval');
		//连表筛选得到数据
		$oldData = Db::table('article')
				->join('article_data','aid','=','article_aid')		
				->where("aid={$aid}")
				->first();
		View::with('oldData',$oldData);
		//当前文章所选择的标签  lists取成一维数组,取得单一字段值的列表
		$arcTagModel = new \Common\Model\ArcTag;
		//lists取得单一字段值的列表
		$tids = $arcTagModel->where("article_aid={$aid}")->lists('tag_tid');
		//如果没有选择标签,给tids一个空数组 *****不能为NULL,否则in_array判断会出问题
		$tids = $tids ? $tids : array();
		View::with('tids',$tids);
		
		//显示模板
		View::make();
	}//edit
	
}//class